package com.torry.edss.integration.facade;


import com.torry.edss.integration.facade.enums.Direction;
import com.torry.edss.integration.facade.result.*;

import java.time.LocalDate;
import java.util.List;

/**
 * @author Administrator
 */
public interface RemoteApiFacade {

    /**
     * 拉取沪深两市所有股票
     */
    List<FetchAllStocksResult> fetchAllStocks();


    /**
     * 拉取历史日线数据， 不包含当日。 通过 tushare api拉取。  没有振幅和换手率字段。
     */
    List<FetchDailyLineResult> fetchHisDailyLines(String code, Integer limit);

    /**
     * 拉取历史 指定日期 所有股票当天的 日线数据， 通过 tushare api拉取。  没有振幅和换手率字段。
     */
    List<FetchDailyLineResult> fetchHisDailyLines(String date);

    /**
     * 拉取实时日线列表
     */
    List<FetchDailyLineResult> fetchRealTimeDailyLines(String code, Integer limit);

    FetchDailyLineResult fetchCurrentDayLine(String code);


    List<FetchDailyLineResult> fetchAllDailyLines(String code);

    /**
     * 拉取前一日K线
     */
    FetchDailyLineResult fetchPreviousDayLine(String code, String date);

    /**
     * 拉取后一日K线
     */
    FetchDailyLineResult fetchNexDayLine(String code, String date);

    /**
     * 拉取指定日期K线
     */
    FetchDailyLineResult fetchDayLine(String code, String date, Direction direction);

    /**
     * 拉取指定股票上市日期
     */
    LocalDate fetchStockLDate(String code);

    /**
     * 拉取涨停股池
     */
    List<FetchLimitUpResult> fetchLimitUps(String date);

    /**
     * 拉取跌停股池
     */
    List<FetchLimitDownResult> fetchLimitDowns(String date);

    /**
     * 拉取炸板股池
     */
    List<FetchLimitBombResult> fetchLimitBombs(String date);

    /**
     * 拉取 近半年 大盘资金流信息
     */
    List<FetchFundFlowInfoResult> fetchFundFlowInfo();

    /**
     * 拉取 指定日期 大盘资金流信息， 日期只能在半年内。半年以前，查不到数据
     */
    FetchFundFlowInfoResult fetchFundFlowInfo(String date);


    /**
     * 拉取最新 指数行情
     */
    FetchRealTimeMarketDataResult fetchRealTimeMarketData();

    /**
     * 拉取最新大盘成交额
     */
    Double fetchRealTimeTotalAmount(Double previousDayTotalAmount);

    /**
     * 拉取最新两市涨跌数据
     */
    FetchUpDownInfoResult fetchRealTimeUpDownInfo();
}
